<?php
/**********************数组性方法工具******************************/

/**
 * @Desc     二维数组去重
 * @Author   pekey
 * @DateTime 2020-05-12T19:29:20+0800
 * @param    array
 * @return   [type]
 */
function more_array_unique($arr = array())
{
    foreach ($arr[0] as $k => $v) {
        $arr_inner_key[] = $k; //先把二维数组中的内层数组的键值记录在在一维数组中
    }
    foreach ($arr as $k => $v) {
        $v = join(",", $v); //降维 用implode()也行
        $temp[$k] = $v; //保留原来的键值 $temp[]即为不保留原来键值
    }
    // printf("After split the array:<br>");
    // print_r($temp);    //输出拆分后的数组
    // echo"<br/>";
    $temp = array_unique($temp); //去重：去掉重复的字符串
    foreach ($temp as $k => $v) {
        $a = explode(",", $v); //拆分后的重组 如：Array( [0] => james [1] => 30 )
        $arr_after[$k] = array_combine($arr_inner_key, $a); //将原来的键与值重新合并
    }
    //ksort($arr_after);//排序如需要：ksort对数组进行排序(保留原键值key) ,sort为不保留key值
    return $arr_after;
}

/**
 * [deep_in_array 多维数组key是否存在判断]
 * @Description 多维数组key是否存在判断
 * @Author      FengPQ
 * @DateTime    2020-05-19T18:29:10+0800
 * @param       [type]                   $value [description]
 * @param       [type]                   $array [description]
 * @return      [type]                          [description]
 */
function deep_in_array($value, $array)
{
    foreach ($array as $item) {
        if (!is_array($item)) {
            if ($item == $value) {
                return true;
            } else {
                continue;
            }
        }

        if (in_array($value, $item)) {
            return true;
        } else if (deep_in_array($value, $item)) {
            return true;
        }
    }
    return false;
}

/**
 * 对象 转 数组
 *
 * @param object $obj 对象
 * @return array
 */
function object_to_array($obj)
{
    $obj = (array) $obj;
    foreach ($obj as $k => $v) {
        if (gettype($v) == 'resource') {
            return;
        }
        if (gettype($v) == 'object' || gettype($v) == 'array') {
            $obj[$k] = (array) object_to_array($v);
        }
    }

    return $obj;
}
